package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.manager.generico.ManagerPesquisarGenerico;
import br.com.foxinline.modelo.Cidade;
import br.com.foxinline.modelo.Setor;
import br.com.foxinline.servico.CidadeServico;
import br.com.foxinline.servico.SetorServico;
import br.com.foxinline.util.GrupoUtilitario;
import br.com.foxinline.util.Msg;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.security.DeclareRoles;
import javax.ejb.EJB;
import javax.ejb.EJBAccessException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author ely
 */
@ViewScoped
@ManagedBean
@DeclareRoles(GrupoUtilitario.ADMINISTRADOR)
public class ManagerPesquisarSetor extends ManagerPesquisarGenerico<Setor> {

    @EJB
    SetorServico setorServico;
    @EJB
    CidadeServico cidadeServico;
    private Setor setor;
    private Setor setorDelete;
    private List<Setor> setores;

    @Override
    @PostConstruct
    public void init() {

        setServico(setorServico);

        this.setor = new Setor();
        this.setorDelete = new Setor();
        this.setores = new ArrayList<Setor>();
    }

    @Override
    public void pesquisar() {
        this.entidadePesquisar = this.setor;

        getSearchResults().setFirst(0);
        onLoadModel();
    }

    @Override
    public void limpar() {
        init();
    }

    @Override
    public void remover() {

        try {

            this.setorDelete.setAtivo(Boolean.FALSE);
            setorServico.update(this.setorDelete);
            Msg.messagemInfo(Msg.SuccessFull);

        } catch (EJBAccessException e) {

            System.err.println(e);
            Msg.messagemWarn(Msg.PermissaoNegada);
        }
    }

    public List<Cidade> autocompleteCidade(String query) {
        return cidadeServico.autocomplete(query);
    }

    public Setor getSetor() {
        return setor;
    }

    public void setSetor(Setor setor) {
        this.setor = setor;
    }

    public Setor getSetorDelete() {
        return setorDelete;
    }

    public void setSetorDelete(Setor setorDelete) {
        this.setorDelete = setorDelete;
    }

    public List<Setor> getSetores() {
        return setores;
    }

    public void setSetores(List<Setor> setores) {
        this.setores = setores;
    }
}
